package com.hmdp.config;

// 导入自定义的Result类，用于封装API返回结果
import com.hmdp.dto.Result;

// 导入Lombok提供的Slf4j注解，用于自动添加日志功能
import lombok.extern.slf4j.Slf4j;

// 导入Spring框架提供的注解，用于声明一个全局异常处理类
import org.springframework.web.bind.annotation.ExceptionHandler;
// 导入Spring框架提供的注解，用于标记该类为全局异常处理类
import org.springframework.web.bind.annotation.RestControllerAdvice;

// 使用Slf4j注解，使类自动拥有日志功能
@Slf4j
// 使用RestControllerAdvice注解，声明该类为全局异常处理类
@RestControllerAdvice
/**
 * 定义了一个全局异常处理类WebExceptionAdvice，用于处理RuntimeException类型的异常。
 * 当Spring MVC框架中的Controller层抛出RuntimeException异常时，这个类中的handleRuntimeException方法会被自动调用。
 * 该方法首先使用SLF4J记录的日志功能将异常信息记录到日志中，然后返回一个表示操作失败的Result对象，并附带异常信息"服务器异常"。
 * Result类是一个自定义的类，通常用于封装API接口的返回结果。使用@RestControllerAdvice注解标记该类，表明这是一个全局的异常处理类，
 * 而@ExceptionHandler注解则指定了该方法处理的异常类型。
 */
public class WebExceptionAdvice {

    // 使用ExceptionHandler注解，声明该方法用于处理RuntimeException类型的异常
    @ExceptionHandler(RuntimeException.class)
    public Result handleRuntimeException(RuntimeException e) {
        // 记录异常信息到日志中
        log.error(e.toString(), e);
        // 返回一个表示失败的Result对象，并附带异常信息
        return Result.fail("服务器异常");
    }
}